#include <iostream>
#include <stdarg.h>
#include <string>
#include<ctime>
using namespace std;
enum
{
    Debug = 0,
    Info,
    Warning,
    Error,
    Fatal
};

string Leveltostring(int level)
{
    switch (level)
    {
    case Debug:
        return "Debug";
    case Info:
        return "Info";
    case Warning:
        return "Warning";
    case Error:
        return "Error";
    case Fatal:
        return "Fatal";
    default:
        return "Unknown";
    }
}

class Log
{
    public:
    Log()
    {
    }
    void LogMessage(int level, const char *format, ...)
    {
        char content[1024];//日志的内容
        va_list args;           // va_list其实就是char* 类型的
        va_start(args, format); // 获取可变参数的位置,由args去指向可变参数部分

        vsnprintf(content, sizeof(content), format, args);

        va_end(args); // 相等于args=nullptr
        uint64_t curtime=time(nullptr);
        printf("[%s][%s][%s]\n",Leveltostring(level).c_str(),to_string(curtime).c_str(),content);
    }
    ~Log()
    {
    }
};